2D 横版游戏开发教程编写 Excel 配置文件加载模块编写 Excel 配置文件加载模块 欢迎来到Dora SSR游戏引擎横版2D游戏开发教程的第八篇!在这篇教程中,我们将介绍如何加载Excel格式的配置文件。这个模块主要做一件事:加载Excel表格为Lua的table,然后经过处理后创建在ECS系统中对应的游戏道具实体对象,并交给之前的教程提到的ECS系统进行逻辑处理。 首先,我们需要引入一些必要的模块 : Script/Loader.tllocal Content <const> = require("Content")local Group <const> = require("Group")local Entity <const> = require("Entity")local Utils <const> = require("Utils")local Struct <const> = Utils.Struct 接下来,我们将加载名为"Data/items.xlsx"的Excel文件,这个文件包含一个名为"items"的表格。这个表格的内容如下: 结构名称序号道具名称道具X坐标道具数量道具图标道具描述StructNoNameXNumIconDescItem1道具101Model/patreon.clip|whale描述1Item2道具23002Model/patreon.clip|cow描述2Item3道具36003Model/patreon.clip|sloth描述3Item4道具49004Model/patreon.clip|panda描述4Item5道具5-3005Model/patreon.clip|rabbit描述5 在使用Teal语言的时候,我们可以先定义一个当加载Excel数据后要转换为的Lua对象的结构。 Script/Loader.tllocal record ItemEntity name: string no: number x: number icon: string num: number desc: string item: booleanend 然后我们就可以开始编写Excel文件加载的处理函数,执行加载主要是使用Content:loadExcel()函数。 Script/Loader.tlfunction loadExcel() local xlsx = Content:loadExcel("Data/items.xlsx", {"items"}) if not xlsx is nil then local its = xlsx["items"] -- 从第二行数据获取到程序访问的字段名称数组 local names = its[2] as {string} -- 从字段名称数组中删除不包含字段名称的第一列数据 table.remove(names, 1) -- 创建名称为Item的Struct数据对象定义 if not Struct:has("Item") then Struct.Item(names) end -- 从ECS系统中删除所有包含item组件的实体 Group{"item"}:each(function(e: Entity.Type): boolean e:destroy() end) -- 从第三行开始遍历Excel数据 for i = 3, #its do local st = Struct:load(its[i]) local item <total>: ItemEntity = { name = st.Name as string, no = st.No as number, x = st.X as number, num = st.Num as number, icon = st.Icon as string, desc = st.Desc as string, item = true } Entity(item) end endend 最后我们定义一个Loader对象作为模块返回的结果,供其它模块访问调用。 Script/Loader.tllocal record Loader type ItemEntity = ItemEntity loadExcel: function()endLoader.loadExcel = loadExcelreturn Loader 在上述代码中,我们首先加载了Excel文件,并获得了直接包含文件数据的Lua的table对象。然后,我们从table中获取了表头,并将其用于创建一个名为"Item"的Struct数据对象的定义。接着,我们遍历了ECS系统中所有现有的带有"item"组件的道具实体,并将它们销毁。最后,我们遍历了Excel表格中的每一行数据,将每一行的数据转换为一个Struct对象,并用这个对象访问各种数据字段创建的新的游戏道具实体,并触发后续在ECS系统中执行的游戏实体的处理逻辑。 至此,我们的Excel配置文件加载模块就编写完成了。在接下来的教程中,我们将使用这些加载的数据来创建游戏角色和实现游戏逻辑。希望你能跟上我们的步伐,一起学习Dora SSR游戏引擎的使用方法!